 /************************************************************
 * aPhysicsList.hh
 ********************************************************************/


#ifndef aPhysicsList_h
#define aPhysicsList_h 1

#include "G4VUserPhysicsList.hh"
#include "globals.hh"

class G4Scintillation;
class G4OpAbsorption;
class G4OpRayleigh;
class G4OpBoundaryProcess;
class G4Cerenkov;

class aPhysicsList: public G4VUserPhysicsList
{
  	public:
    	aPhysicsList();
   		~aPhysicsList();

  	protected:

    	//Construct particle and physics
    	void ConstructParticle();
    	void ConstructProcess();
   
    	//These methods construct physics processes and register them
    	void ConstructGeneral();
    	void ConstructEM();
    	void ConstructRadioactiveDecay();
	void ConstructHadronic();
	void ConstructPhotonuclear();
	void ConstructOp();
	void SetVerbose(G4int);
    	
	//Sets the Cuts
	void SetCuts();

private:
  //G4Scintillation*     theScintillationProcess;
  G4OpAbsorption*      theAbsorptionProcess;
  G4OpRayleigh*        theRayleighScatteringProcess;
  G4OpBoundaryProcess* theBoundaryProcess;
  G4Cerenkov*		   theCerenkovProcess;

};

#endif



